home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Champak 62
/
Volume 62 - JOGO DISK .iso
/
Games
/
penguin_dinner.swf
/
scripts
/
__Packages
/
com
/
gskinner
/
events
/
GDispatcher.as
Wrap
Text File
|
2008-03-17
|
4KB
|
127 lines
class com.gskinner.events.GDispatcher
{
static var _instance = undefined;
function GDispatcher()
{
}
static function initialize(p_obj)
{
if(com.gskinner.events.GDispatcher._instance == undefined)
{
com.gskinner.events.GDispatcher._instance = new com.gskinner.events.GDispatcher();
}
p_obj.dispatchEvent = com.gskinner.events.GDispatcher._instance.dispatchEvent;
p_obj.eventListenerExists = com.gskinner.events.GDispatcher._instance.eventListenerExists;
p_obj.addEventListener = com.gskinner.events.GDispatcher._instance.addEventListener;
p_obj.removeEventListener = com.gskinner.events.GDispatcher._instance.removeEventListener;
p_obj.removeAllEventListeners = com.gskinner.events.GDispatcher._instance.removeAllEventListeners;
}
static function _indexOfListener(p_listeners, p_obj, p_function)
{
var _loc3_ = p_listeners.length;
var _loc2_ = -1;
while((_loc2_ = _loc2_ + 1) < _loc3_)
{
var _loc1_ = p_listeners[_loc2_];
if(_loc1_.o == p_obj && _loc1_.f == p_function)
{
return _loc2_;
}
}
return -1;
}
static function _dispatchEvent(p_dispatchObj, p_listeners, p_eventObj)
{
var _loc5_ = undefined;
for(_loc5_ in p_listeners)
{
var _loc1_ = p_listeners[_loc5_].o;
var _loc3_ = typeof _loc1_;
var _loc2_ = p_listeners[_loc5_].f;
if(_loc3_ == "object" || _loc3_ == "movieclip")
{
if(_loc1_.handleEvent != undefined && _loc2_ == undefined)
{
_loc1_.handleEvent(p_eventObj);
}
if(_loc2_ == undefined)
{
_loc2_ = p_eventObj.type;
}
_loc1_._loc2_(p_eventObj);
}
else
{
_loc1_.apply(p_dispatchObj,[p_eventObj]);
}
}
}
function dispatchEvent(p_eventObj)
{
if(p_eventObj.type == "ALL")
{
return undefined;
}
if(p_eventObj.target == undefined)
{
p_eventObj.target = this;
}
this[p_eventObj.type + "Handler"](p_eventObj);
var _loc3_ = this.gDispatcher_listeners[p_eventObj.type];
if(_loc3_ != undefined)
{
com.gskinner.events.GDispatcher._dispatchEvent(this,_loc3_,p_eventObj);
}
_loc3_ = this.gDispatcher_listeners.ALL;
if(_loc3_ != undefined)
{
com.gskinner.events.GDispatcher._dispatchEvent(this,_loc3_,p_eventObj);
}
}
function eventListenerExists(p_event, p_obj, p_function)
{
return com.gskinner.events.GDispatcher._indexOfListener(this.gDispatcher_listeners[p_event],p_obj,p_function) != -1;
}
function addEventListener(p_event, p_obj, p_function)
{
if(this.gDispatcher_listeners == undefined)
{
this.gDispatcher_listeners = {};
_global.ASSetPropFlags(this,this.gDispatcher_listeners,1);
}
var _loc3_ = this.gDispatcher_listeners[p_event];
if(_loc3_ == undefined)
{
this.gDispatcher_listeners[p_event] = _loc3_ = [];
}
if(com.gskinner.events.GDispatcher._indexOfListener(_loc3_,p_obj,p_function) == -1)
{
_loc3_.push({o:p_obj,f:p_function});
}
}
function removeEventListener(p_event, p_obj, p_function)
{
var _loc2_ = this.gDispatcher_listeners[p_event];
if(_loc2_ == undefined)
{
return undefined;
}
var _loc3_ = com.gskinner.events.GDispatcher._indexOfListener(_loc2_,p_obj,p_function);
if(_loc3_ != -1)
{
_loc2_.splice(_loc3_,1);
}
}
function removeAllEventListeners(p_event)
{
if(p_event == undefined)
{
delete this.gDispatcher_listeners;
}
else
{
delete this.gDispatcher_listeners[p_event];
}
}
}